<template>
	<div class="wrapper">
		<div class="back-icon" @click="goBack()">
			<i class="fa fa-arrow-left"></i>
		</div>
		<!-- header部分 -->
		<header>
			<p>商家列表</p>
		</header>

		<!-- 商家列表部分 -->
		<ul class="business">
			<li v-for="item in businessArr" @click="toBusinessInfo(item.businessId)">
				<div class="business-img">
					<img :src="item.businessImg">
					<div class="business-img-quantity" v-show="item.quantity>0">{{item.quantity}}</div>
				</div>
				<div class="business-info">
					<h3>{{item.businessName}}</h3>
					<p>&#165;{{item.starPrice}}起送 | &#165;{{item.deliveryPrice}}配送</p>
					<p>{{item.businessExplain}}</p>
				</div>
			</li>
			
		</ul>

		<!--底部菜单部分-->
		<Footer></Footer>
	</div>
</template>

<script>
	import {useRouter} from 'vue-router'
	import {useRoute} from 'vue-router'
	import {ref,onMounted,getCurrentInstance, reactive} from 'vue';
	import Footer from '../components/Footer.vue';


	export default {
		name: 'BusinessList',
		components: {
			Footer
		},
		setup() {
			const currentInstance = getCurrentInstance();
			const router = useRouter();
			const route = useRoute();
			const orderTypeId = route.params.orderTypeId;
			const businessArr = ref([]);
			const user = ref({});

			const listCart = () => {
				currentInstance.appContext.config.globalProperties.$axios.post('CartController/listCart',
					currentInstance.appContext.config.globalProperties.$qs.stringify({
						userId: user.value.userId
					})).then(response => {
					let cartArr = response.data;
					// console.log(cartArr);
					//遍历所有食品列表
					for (let businessItem of businessArr.value) {
						businessItem.quantity = 0;
						for (let cartItem of cartArr) {
							if (cartItem.businessId == businessItem.businessId) {
								businessItem.quantity += cartItem.quantity;
							}
						}
					}
					businessArr.value.sort();
				}).catch(error => {
					console.error(error);
				});
			};

			const toBusinessInfo = (businessId) => {
				// 使用新的路由导航方法
				// 注意：在当前组件中，需要引入 `router` 对象
				router.push({
					name: 'BusinessInfo',
					params: {
						businessId: businessId
					}
				});
			};
			
			const goBack = () => {
				router.go(-1);
			};


			onMounted(() => {
				user.value = currentInstance.appContext.config.globalProperties.$getSessionStorage('user');
				// 根据orderTypeId查询商家信息
				currentInstance.appContext.config.globalProperties.$axios.post(
						'BusinessController/listBusinessByOrderTypeId', currentInstance.appContext.config
						.globalProperties.$qs.stringify({
							orderTypeId: orderTypeId
						}))
					.then(response => {
						businessArr.value = response.data;
						// console.log(businessArr);
						// 判断是否登录
						if (user.value != null) {
							listCart();
						}
					})
					.catch(error => {
						console.error(error);
					});
			});

			return {
				orderTypeId,
				businessArr,
				user,
				toBusinessInfo,
				listCart,
				goBack
			};
		}
	};
</script>

<style scoped>
	/*********** 总容器 ***********/
	.wrapper {
		width: 100%;
		height: 100%;
	}
	/*********** 回退按钮 ***********/
	.wrapper .back-icon{
		width: 12vw;
		height: 12vw;
		background-color: #0097FF;
		color: #FFFFFF;
		font-size: 4.8vw;
		position: fixed;
		left: 0;
		top: 0;
		z-index: 1001;
		display: flex;
		justify-content: center;
		align-items: center;
	}
	/*********** header部分 ***********/
	.wrapper header {
		width: 100%;
		height: 12vw;
		background-color: #0097FF;
		color: #FFFFFF;
		font-size: 4.8vw;

		position: fixed;
		left: 0;
		top: 0;
		z-index: 1000;
		/* 这行代码保证header位于最顶层，不加这一行会导致商家图片遮挡header，因为默认情况下，绝对位置的元素后写的位于上层 */

		display: flex;
		justify-content: center;
		align-items: center;
	}
	
	.wrapper .back-icon{
		width: 12vw;
		display: flex;
		justify-content: center;
		align-items: center;
	}

	/*********** 商家列表部分 ***********/
	.wrapper .business {
		width: 100%;
		margin-top: 12vw;
		margin-bottom: 14vw;
	}

	.wrapper .business li {
		width: 100%;
		box-sizing: border-box;
		padding: 2.5vw;
		border-bottom: solid 1px #DDD;
		user-select: none;
		cursor: pointer;

		display: flex;
		align-items: center;
	}

	.wrapper .business li .business-img {
		position: relative;
	}

	.wrapper .business li .business-img img {
		width: 20vw;
		height: 20vw;
	}

	.wrapper .business li .business-img .business-img-quantity {
		width: 5vw;
		height: 5vw;
		background-color: red;
		color: #FFFFFF;
		font-size: 3.6vw;
		border-radius: 2.5vw;

		display: flex;
		justify-content: center;
		align-items: center;

		position: absolute;
		right: -1.5vw;
		top: -1.5vw;
	}

	.wrapper .business li .business-info {
		margin-left: 3vw;
	}

	.wrapper .business li .business-info h3 {
		font-size: 3.8vw;
		color: #555;
	}

	.wrapper .business li .business-info p {
		font-size: 3vw;
		color: #888;
		margin-top: 2vw;
	}
</style>